/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * UpdateDelete.java
 *
 * Created on 07/12/2011, 14:44:11
 */
package acervo.view;

import acervo.control.Controle;
import acervo.model.CdAplicativo;
import acervo.model.CdMusica;
import acervo.model.DvdAplicativo;
import acervo.model.DvdFilme;
import acervo.model.DvdMusica;
import acervo.model.Livro;
import acervo.model.Midia;
import acervo.model.Pdf;
import acervo.model.Revista;
import acervo.model.TextoImpresso;
import acervo.model.TipoMidia;
import acervo.util.Tela;
import java.awt.event.KeyEvent;
import javax.swing.JOptionPane;

/**
 *
 * @author Fernando
 */
public class UpdateDelete extends javax.swing.JFrame {

    /** Creates new form UpdateDelete */
    public UpdateDelete(String nomeBotao, Midia midia, String titulo) {
        initComponents();
        botao.setText(nomeBotao);   
        setTitle(titulo);
        if(nomeBotao.equals("Excluir")){
            tfArtista.setEditable(false);
            tfAutor.setEditable(false);
            tfLocal.setEditable(false);
            tfEditora.setEditable(false);
            tfGenero.setEditable(false);
            tfNEdicao.setEditable(false);
            tfTitulo.setEditable(false);
            taObs.setEditable(false);
        }
        else if(nomeBotao.equals("Exibição")){
            tfArtista.setEditable(false);
            tfAutor.setEditable(false);
            tfLocal.setEditable(false);
            tfEditora.setEditable(false);
            tfGenero.setEditable(false);
            tfNEdicao.setEditable(false);
            tfTitulo.setEditable(false);
            taObs.setEditable(false);
            botao.setVisible(false);
        }
        if(midia.getTipo().equals(TipoMidia.CDAPLICATIVO)){
            tfId.setText(Integer.toString(midia.getId()));
            tfCategoria.setText("CD de Aplicativo");
            tfTitulo.setText(midia.getTitulo());
            tfLocal.setText(midia.getLocalizacao());
            taObs.setText(midia.getObservacoes());
        }
        else if(midia.getTipo().equals(TipoMidia.CDMUSICA)){
            Tela.HabilitaCampos(tfArtista, tfGenero, labelArtista, labelGenero);
            tfId.setText(Integer.toString(midia.getId()));
            tfCategoria.setText("CD de Música");
            tfTitulo.setText(midia.getTitulo());
            tfLocal.setText(midia.getLocalizacao());
            taObs.setText(midia.getObservacoes());
            tfArtista.setText(((CdMusica)midia).getArtista());
            tfGenero.setText(((CdMusica)midia).getGenero());
        }
        else if(midia.getTipo().equals(TipoMidia.DVDAPLICATIVO)){
            tfId.setText(Integer.toString(midia.getId()));
            tfCategoria.setText("DVD de Aplicativo");
            tfTitulo.setText(midia.getTitulo());
            tfLocal.setText(midia.getLocalizacao());
            taObs.setText(midia.getObservacoes());
        }
        else if(midia.getTipo().equals(TipoMidia.DVDFILME)){
            Tela.HabilitaCampos(tfGenero, labelGenero);
            tfId.setText(Integer.toString(midia.getId()));
            tfCategoria.setText("DVD de Filme");
            tfTitulo.setText(midia.getTitulo());
            tfLocal.setText(midia.getLocalizacao());
            taObs.setText(midia.getObservacoes());
            tfGenero.setText(((DvdFilme)midia).getGenero());
        }
        else if(midia.getTipo().equals(TipoMidia.DVDMUSICA)){
            Tela.HabilitaCampos(tfArtista, tfGenero, labelArtista, labelGenero);
            tfId.setText(Integer.toString(midia.getId()));
            tfCategoria.setText("DVD de Música");
            tfTitulo.setText(midia.getTitulo());
            tfLocal.setText(midia.getLocalizacao());
            taObs.setText(midia.getObservacoes());
            tfArtista.setText(((DvdMusica)midia).getArtista());
            tfGenero.setText(((DvdMusica)midia).getGenero());
        }
        else if(midia.getTipo().equals(TipoMidia.HD)){
            tfId.setText(Integer.toString(midia.getId()));
            tfCategoria.setText("HD");
            tfTitulo.setText(midia.getTitulo());
            tfLocal.setText(midia.getLocalizacao());
            taObs.setText(midia.getObservacoes());
        }
        else if(midia.getTipo().equals(TipoMidia.LIVRO)){
            Tela.HabilitaCampos(tfAutor, labelAutor);
            tfId.setText(Integer.toString(midia.getId()));
            tfCategoria.setText("Livro");
            tfTitulo.setText(midia.getTitulo());
            tfLocal.setText(midia.getLocalizacao());
            taObs.setText(midia.getObservacoes());
            tfAutor.setText(((Livro)midia).getAutor());
        }
        else if(midia.getTipo().equals(TipoMidia.PDF)){
            tfId.setText(Integer.toString(midia.getId()));
            tfCategoria.setText("PDF");
            tfTitulo.setText(midia.getTitulo());
            tfLocal.setText(midia.getLocalizacao());
            taObs.setText(midia.getObservacoes());
        }
        else if(midia.getTipo().equals(TipoMidia.REVISTA)){
            Tela.HabilitaCampos(tfEditora, tfNEdicao, labelEditora, labelNEdicao);
            tfId.setText(Integer.toString(midia.getId()));
            tfCategoria.setText("Revista");
            tfTitulo.setText(midia.getTitulo());
            tfLocal.setText(midia.getLocalizacao());
            taObs.setText(midia.getObservacoes());
            tfEditora.setText(((Revista)midia).getEditora());
            tfNEdicao.setText(Integer.toString(((Revista)midia).getNEdicao()));            
        }
        else if(midia.getTipo().equals(TipoMidia.LIVRO)){
            Tela.HabilitaCampos(tfAutor, labelAutor);
            tfId.setText(Integer.toString(midia.getId()));
            tfCategoria.setText("Texto Impresso");
            tfTitulo.setText(midia.getTitulo());
            tfLocal.setText(midia.getLocalizacao());
            taObs.setText(midia.getObservacoes());
            tfAutor.setText(((Livro)midia).getAutor());
        }
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        panelTitulo = new javax.swing.JPanel();
        labelTitulo = new javax.swing.JLabel();
        filler1 = new javax.swing.Box.Filler(new java.awt.Dimension(20, 0), new java.awt.Dimension(65, 0), new java.awt.Dimension(20, 32767));
        tfTitulo = new javax.swing.JTextField();
        panelLocal = new javax.swing.JPanel();
        labelLocal = new javax.swing.JLabel();
        filler2 = new javax.swing.Box.Filler(new java.awt.Dimension(5, 0), new java.awt.Dimension(28, 0), new java.awt.Dimension(5, 32767));
        tfLocal = new javax.swing.JTextField();
        panelBotoes = new javax.swing.JPanel();
        filler5 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 0), new java.awt.Dimension(0, 0), new java.awt.Dimension(32767, 0));
        botao = new javax.swing.JButton();
        filler6 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 0), new java.awt.Dimension(0, 0), new java.awt.Dimension(32767, 0));
        panelCategoria = new javax.swing.JPanel();
        labelCategoria = new javax.swing.JLabel();
        filler8 = new javax.swing.Box.Filler(new java.awt.Dimension(50, 0), new java.awt.Dimension(20, 0), new java.awt.Dimension(50, 32767));
        tfCategoria = new javax.swing.JTextField();
        panelOptional1 = new javax.swing.JPanel();
        labelGenero = new javax.swing.JLabel();
        filler11 = new javax.swing.Box.Filler(new java.awt.Dimension(20, 0), new java.awt.Dimension(52, 0), new java.awt.Dimension(20, 32767));
        tfGenero = new javax.swing.JTextField();
        filler10 = new javax.swing.Box.Filler(new java.awt.Dimension(20, 0), new java.awt.Dimension(20, 0), new java.awt.Dimension(20, 32767));
        labelArtista = new javax.swing.JLabel();
        filler12 = new javax.swing.Box.Filler(new java.awt.Dimension(20, 0), new java.awt.Dimension(10, 0), new java.awt.Dimension(20, 32767));
        tfArtista = new javax.swing.JTextField();
        panelOpcional2 = new javax.swing.JPanel();
        labelAutor = new javax.swing.JLabel();
        filler13 = new javax.swing.Box.Filler(new java.awt.Dimension(55, 0), new java.awt.Dimension(60, 0), new java.awt.Dimension(55, 32767));
        tfAutor = new javax.swing.JTextField();
        filler14 = new javax.swing.Box.Filler(new java.awt.Dimension(20, 0), new java.awt.Dimension(20, 0), new java.awt.Dimension(20, 32767));
        labelEditora = new javax.swing.JLabel();
        filler16 = new javax.swing.Box.Filler(new java.awt.Dimension(10, 0), new java.awt.Dimension(10, 0), new java.awt.Dimension(10, 32767));
        tfEditora = new javax.swing.JTextField();
        filler15 = new javax.swing.Box.Filler(new java.awt.Dimension(10, 0), new java.awt.Dimension(20, 0), new java.awt.Dimension(10, 32767));
        labelNEdicao = new javax.swing.JLabel();
        filler17 = new javax.swing.Box.Filler(new java.awt.Dimension(10, 0), new java.awt.Dimension(10, 0), new java.awt.Dimension(10, 32767));
        tfNEdicao = new javax.swing.JTextField();
        panelId = new javax.swing.JPanel();
        labelId = new javax.swing.JLabel();
        filler3 = new javax.swing.Box.Filler(new java.awt.Dimension(20, 0), new java.awt.Dimension(20, 0), new java.awt.Dimension(50, 32767));
        tfId = new javax.swing.JTextField();
        jPanel1 = new javax.swing.JPanel();
        labelObs = new javax.swing.JLabel();
        filler4 = new javax.swing.Box.Filler(new java.awt.Dimension(50, 0), new java.awt.Dimension(30, 0), new java.awt.Dimension(50, 32767));
        jScrollPane1 = new javax.swing.JScrollPane();
        taObs = new javax.swing.JTextArea();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setResizable(false);
        getContentPane().setLayout(null);

        panelTitulo.setLayout(new javax.swing.BoxLayout(panelTitulo, javax.swing.BoxLayout.LINE_AXIS));

        labelTitulo.setText("Título:");
        panelTitulo.add(labelTitulo);
        panelTitulo.add(filler1);
        panelTitulo.add(tfTitulo);

        getContentPane().add(panelTitulo);
        panelTitulo.setBounds(10, 50, 570, 20);

        panelLocal.setLayout(new javax.swing.BoxLayout(panelLocal, javax.swing.BoxLayout.LINE_AXIS));

        labelLocal.setText("*Localização:");
        panelLocal.add(labelLocal);
        panelLocal.add(filler2);

        tfLocal.setColumns(50);
        panelLocal.add(tfLocal);

        getContentPane().add(panelLocal);
        panelLocal.setBounds(10, 90, 570, 20);

        panelBotoes.setLayout(new javax.swing.BoxLayout(panelBotoes, javax.swing.BoxLayout.LINE_AXIS));
        panelBotoes.add(filler5);

        botao.setText("Cadastrar");
        botao.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botaoActionPerformed(evt);
            }
        });
        panelBotoes.add(botao);
        panelBotoes.add(filler6);

        getContentPane().add(panelBotoes);
        panelBotoes.setBounds(10, 340, 570, 20);

        panelCategoria.setLayout(new javax.swing.BoxLayout(panelCategoria, javax.swing.BoxLayout.X_AXIS));

        labelCategoria.setText("Categoria:");
        panelCategoria.add(labelCategoria);
        panelCategoria.add(filler8);

        tfCategoria.setEditable(false);
        panelCategoria.add(tfCategoria);

        getContentPane().add(panelCategoria);
        panelCategoria.setBounds(270, 10, 230, 20);

        panelOptional1.setLayout(new javax.swing.BoxLayout(panelOptional1, javax.swing.BoxLayout.LINE_AXIS));

        labelGenero.setText("  Gênero:");
        labelGenero.setEnabled(false);
        panelOptional1.add(labelGenero);
        panelOptional1.add(filler11);

        tfGenero.setEnabled(false);
        panelOptional1.add(tfGenero);
        panelOptional1.add(filler10);

        labelArtista.setText("Artista:");
        labelArtista.setEnabled(false);
        panelOptional1.add(labelArtista);
        panelOptional1.add(filler12);

        tfArtista.setEnabled(false);
        panelOptional1.add(tfArtista);

        getContentPane().add(panelOptional1);
        panelOptional1.setBounds(10, 250, 570, 20);

        panelOpcional2.setLayout(new javax.swing.BoxLayout(panelOpcional2, javax.swing.BoxLayout.LINE_AXIS));

        labelAutor.setText("  Autor:");
        labelAutor.setEnabled(false);
        panelOpcional2.add(labelAutor);
        panelOpcional2.add(filler13);

        tfAutor.setEnabled(false);
        panelOpcional2.add(tfAutor);
        panelOpcional2.add(filler14);

        labelEditora.setText("*Editora:");
        labelEditora.setEnabled(false);
        panelOpcional2.add(labelEditora);
        panelOpcional2.add(filler16);

        tfEditora.setEnabled(false);
        panelOpcional2.add(tfEditora);
        panelOpcional2.add(filler15);

        labelNEdicao.setText("Nº de Edição:");
        labelNEdicao.setEnabled(false);
        panelOpcional2.add(labelNEdicao);
        panelOpcional2.add(filler17);

        tfNEdicao.setColumns(2);
        tfNEdicao.setEnabled(false);
        tfNEdicao.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                tfNEdicaoKeyTyped(evt);
            }
        });
        panelOpcional2.add(tfNEdicao);

        getContentPane().add(panelOpcional2);
        panelOpcional2.setBounds(10, 290, 570, 20);

        panelId.setLayout(new javax.swing.BoxLayout(panelId, javax.swing.BoxLayout.LINE_AXIS));

        labelId.setText("ID:");
        panelId.add(labelId);
        panelId.add(filler3);

        tfId.setEditable(false);
        panelId.add(tfId);

        getContentPane().add(panelId);
        panelId.setBounds(110, 10, 80, 20);

        jPanel1.setLayout(new javax.swing.BoxLayout(jPanel1, javax.swing.BoxLayout.LINE_AXIS));

        labelObs.setText("Observação:");
        jPanel1.add(labelObs);
        jPanel1.add(filler4);

        taObs.setColumns(20);
        taObs.setRows(5);
        jScrollPane1.setViewportView(taObs);

        jPanel1.add(jScrollPane1);

        getContentPane().add(jPanel1);
        jPanel1.setBounds(10, 130, 570, 100);

        pack();
    }// </editor-fold>//GEN-END:initComponents

private void botaoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botaoActionPerformed
    Midia midia;
    if(tfLocal.getText().isEmpty() || (tfCategoria.getText().equals("Revista") && tfEditora.getText().isEmpty())){
        if(tfLocal.getText().isEmpty()){
            JOptionPane.showMessageDialog(null, "Localizacao é um campo obrigatório!", "Atenção", JOptionPane.WARNING_MESSAGE);
            tfLocal.requestFocus();
        }
        if(tfCategoria.getText().equals("Revista") && tfEditora.getText().isEmpty()){
            JOptionPane.showMessageDialog(null, "Editora é obrigatório quando a mídia for Revista!", "Atenção", JOptionPane.WARNING_MESSAGE);
            tfEditora.requestFocus();
        }
    }
    else{
        if(tfCategoria.getText().equals("CD de Aplicativo")){
            midia = new CdAplicativo(tfLocal.getText());
            midia.setId(Integer.parseInt(tfId.getText()));
            midia.setObservacoes(taObs.getText());
            midia.setTitulo(tfTitulo.getText());            
            decide(botao.getText(), midia);
        }
        else if(tfCategoria.getText().equals("CD de Música")){
            midia = new CdMusica(tfLocal.getText());
            midia.setId(Integer.parseInt(tfId.getText()));
            midia.setObservacoes(taObs.getText());
            midia.setTitulo(tfTitulo.getText());  
            ((CdMusica)midia).setArtista(tfArtista.getText());
            ((CdMusica)midia).setGenero(tfGenero.getText());    
            decide(botao.getText(), midia);
        }
        else if(tfCategoria.getText().equals("DVD de Aplicativo")){
            midia = new DvdAplicativo(tfLocal.getText());
            midia.setId(Integer.parseInt(tfId.getText()));
            midia.setObservacoes(taObs.getText());
            midia.setTitulo(tfTitulo.getText());   
            decide(botao.getText(), midia);
        }
        else if(tfCategoria.getText().equals("DVD de Música")){
            midia = new DvdMusica(tfLocal.getText());
            midia.setId(Integer.parseInt(tfId.getText()));
            midia.setObservacoes(taObs.getText());
            midia.setTitulo(tfTitulo.getText());  
            ((DvdMusica)midia).setArtista(tfArtista.getText());
            ((DvdMusica)midia).setGenero(tfGenero.getText());
            decide(botao.getText(), midia);
        }
        else if(tfCategoria.getText().equals("DVD de Filme")){
            midia = new DvdFilme(tfLocal.getText());
            midia.setId(Integer.parseInt(tfId.getText()));
            midia.setObservacoes(taObs.getText());
            midia.setTitulo(tfTitulo.getText());        
            ((DvdFilme)midia).setGenero(tfGenero.getText());
            decide(botao.getText(), midia);
        }
        else if(tfCategoria.getText().equals("HD")){
            midia = new DvdMusica(tfLocal.getText());
            midia.setId(Integer.parseInt(tfId.getText()));
            midia.setObservacoes(taObs.getText());
            midia.setTitulo(tfTitulo.getText());
            decide(botao.getText(), midia);
        }
        else if(tfCategoria.getText().equals("Livro")){
            midia = new Livro(tfLocal.getText());
            midia.setId(Integer.parseInt(tfId.getText()));
            midia.setObservacoes(taObs.getText());
            midia.setTitulo(tfTitulo.getText());  
            ((Livro)midia).setAutor(tfAutor.getText());    
            decide(botao.getText(), midia);
        }
        else if(tfCategoria.getText().equals("PDF")){
            midia = new Pdf(tfLocal.getText());
            midia.setId(Integer.parseInt(tfId.getText()));
            midia.setObservacoes(taObs.getText());
            midia.setTitulo(tfTitulo.getText());    
            decide(botao.getText(), midia);
        }
        else if(tfCategoria.getText().equals("Revista")){
            midia = new Revista(tfLocal.getText(), tfEditora.getText());
            midia.setId(Integer.parseInt(tfId.getText()));
            midia.setObservacoes(taObs.getText());
            midia.setTitulo(tfTitulo.getText());           
            ((Revista)midia).setNEdicao(Integer.parseInt(tfNEdicao.getText()));
            decide(botao.getText(), midia);
        }
        else if(tfCategoria.getText().equals("Texto Impresso")){
            midia = new TextoImpresso(tfLocal.getText());
            midia.setId(Integer.parseInt(tfId.getText()));
            midia.setObservacoes(taObs.getText());
            midia.setTitulo(tfTitulo.getText());  
            ((TextoImpresso)midia).setAutor(tfAutor.getText());
            decide(botao.getText(), midia);
        }
        dispose();
    }
    
}//GEN-LAST:event_botaoActionPerformed

private void tfNEdicaoKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_tfNEdicaoKeyTyped
   char letra = evt.getKeyChar();
    if((letra < '0' || letra > '9') && letra != KeyEvent.VK_BACK_SPACE){
	JOptionPane.showMessageDialog(null, "Use apenas números!", "Aviso!", JOptionPane.INFORMATION_MESSAGE);
	evt.consume();
    }
}//GEN-LAST:event_tfNEdicaoKeyTyped

private void decide(String botao, Midia midia){
    if(botao.equals("Alterar"))
        Controle.alterarMidia(midia);
    if(botao.equals("Excluir"))
        Controle.excluirMidia(midia);
}

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton botao;
    private javax.swing.Box.Filler filler1;
    private javax.swing.Box.Filler filler10;
    private javax.swing.Box.Filler filler11;
    private javax.swing.Box.Filler filler12;
    private javax.swing.Box.Filler filler13;
    private javax.swing.Box.Filler filler14;
    private javax.swing.Box.Filler filler15;
    private javax.swing.Box.Filler filler16;
    private javax.swing.Box.Filler filler17;
    private javax.swing.Box.Filler filler2;
    private javax.swing.Box.Filler filler3;
    private javax.swing.Box.Filler filler4;
    private javax.swing.Box.Filler filler5;
    private javax.swing.Box.Filler filler6;
    private javax.swing.Box.Filler filler8;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JLabel labelArtista;
    private javax.swing.JLabel labelAutor;
    private javax.swing.JLabel labelCategoria;
    private javax.swing.JLabel labelEditora;
    private javax.swing.JLabel labelGenero;
    private javax.swing.JLabel labelId;
    private javax.swing.JLabel labelLocal;
    private javax.swing.JLabel labelNEdicao;
    private javax.swing.JLabel labelObs;
    private javax.swing.JLabel labelTitulo;
    private javax.swing.JPanel panelBotoes;
    private javax.swing.JPanel panelCategoria;
    private javax.swing.JPanel panelId;
    private javax.swing.JPanel panelLocal;
    private javax.swing.JPanel panelOpcional2;
    private javax.swing.JPanel panelOptional1;
    private javax.swing.JPanel panelTitulo;
    private javax.swing.JTextArea taObs;
    private javax.swing.JTextField tfArtista;
    private javax.swing.JTextField tfAutor;
    private javax.swing.JTextField tfCategoria;
    private javax.swing.JTextField tfEditora;
    private javax.swing.JTextField tfGenero;
    private javax.swing.JTextField tfId;
    private javax.swing.JTextField tfLocal;
    private javax.swing.JTextField tfNEdicao;
    private javax.swing.JTextField tfTitulo;
    // End of variables declaration//GEN-END:variables
}
